import DAL from './dal.js';
import util from './util.js'

/**
 * 跟A08学历学位表相关的方法
 * 着重做测试
 * A0801A 学历名称 AcademicQualification//学历级别 大专 本科 研究生之类的
 * A0901A 学位名称  Degree//学位级别 学士 硕士 博士之类的
 * A0814  学校 School
 * A0824  Major 记住输出的时候如果字段本身没有带专业则添加“专业”两个字
 *
 * A0837 1代表全日制 2代表在职
 *
 * A0831 是否最高全日制学历  isHighestFulltimeAcademicQualification
 * A0832 是否最高全日制学位 isHighestFulltimeDegreeLevel
 * A0834 是否最高学历
 * A0835 是否最高学位（自动生成）
 * A0838 是否最高在职学历  isHighestInServiceAcademicQualification
 * A0839 是否最高在职学位 HighestInServiceDegreeLevel
 * A0899 任免表输出.最高学历的标识。true—是；false—否。
 *
 * 注：人面表里的全日制 在职两栏 要看A0899是true的，然后分别拼接A0831和A0832   A0838和A0839
 * A0838和A0839可以在查询和统计分析里用
 */
class A08DAL {
    constructor() {
        this.init();
    };

    init() {
        this.dal = new DAL();
        this.util = new util();
    };

    /**
     * 学历 1开头的都是研究生 最高到研究生 最低到小学
     * 2是本科
     * 3是 专科
     * 4是 中专
     * 6 7 8 9 算是义务教育了
     */
    ZB64 = {
        '1': '研究生教育',
        '11': '研究生',
        '13': '研究生班',
        '1A': '中央党校研究生',
        '1B': '省委党校研究生',
        '2': '本科教育',
        '21': '大学',
        '2A': '中央党校大学',
        '2B': '省委党校大学',
        '3': '专科教育',
        '31': '大专',
        '34': '中央党校大专',
        '37': '省委党校大专',
        '3B': '大学普通班',
        '41': '中专',
        '47': '中技',
        '61': '高中',
        '71': '初中',
        '81': '小学',
        '91': '其他'
    }
    /**
     * 学位 1和2开头是博士
     *      3开头硕士
     *        4开头学士
     */
    GB6864 = {
        '1': '名誉博士',
        '2': '博士',
        '201': '哲学博士',
        '202': '经济学博士',
        '203': '法学博士',
        '204': '教育学博士',
        '205': '文学博士',
        '206': '历史学博士',
        '207': '理学博士',
        '208': '工学博士',
        '209': '农学博士',
        '210': '医学博士',
        '211': '军事学博士',
        '212': '管理学博士',
        '245': '临床医学博士',
        '248': '兽医博士',
        '250': '口腔医学博士',
        '3': '硕士',
        '301': '哲学硕士',
        '302': '经济学硕士',
        '303': '法学硕士',
        '304': '教育学硕士',
        '305': '文学硕士',
        '306': '历史学硕士',
        '307': '理学硕士',
        '308': '工学硕士',
        '309': '农学硕士',
        '310': '医学硕士',
        '311': '军事学硕士',
        '312': '管理学硕士',
        '341': '法律硕士',
        '342': '教育硕士',
        '343': '工程硕士',
        '344': '建筑学硕士',
        '345': '临床学硕士',
        '346': '工商管理硕士',
        '347': '农业推广硕士',
        '348': '兽医硕士',
        '349': '公共管理硕士',
        '350': '口腔医学硕士',
        '351': '公共卫生硕士',
        '352': '军事硕士',
        '4': '学士',
        '401': '哲学学士',
        '402': '经济学学士',
        '403': '法学学士',
        '404': '教育学学士',
        '405': '文学学士',
        '406': '历史学学士',
        '407': '理学学士',
        '408': '工学学士',
        '409': '农学学士',
        '410': '医学学士',
        '411': '军事学学士',
        '412': '管理学学士',
        '444': '建筑学学士'
    }

    //在js中 数组和json应该是一样的，数组可以当作key是0 1 2 的json
    toCanRead(originalJsonInfoArray) {
        //console.log(originalJsonInfoArray)
        let canReadArray = new Array();
        for (let key in originalJsonInfoArray) {

            let originalJson = originalJsonInfoArray[key];//这个才是真正的json

            let temp = {};
            for (let item in originalJson) {

                if(originalJson[item]==null||originalJson[item]=='null'){
                    originalJson[item]='';
                }
                
                if (this.util.A08Dictionary[item]) {
                    if (originalJson[item]) {
                        temp[this.util.A08Dictionary[item]] = originalJson[item].toString().trim()
                    } else {
                        temp[this.util.A08Dictionary[item]] = '';
                    }

                }

            }
            canReadArray.push(temp)
        }
        return canReadArray;
    }

    /**
     * @param {Object} persionID
     * 3、通过人员ID 查询他的学历学位信息
     * A0801B是学历
     */
    async SelectEducationInfoByPersionID(persionID) {
        return this.toCanRead(await this.dal.SelectDataArrayFromDB('A08', `WHERE A0000 = \'${persionID}\' `));
    }


    /**
     * A0901B是学位代码
     * 查询符合学位层次的人 返回A0000数组
     * @param {Object} degreeLevel 1博士 3 硕士 4学士
     * @param {Object} isFullTime     1全日制 2在职 3不在乎是否在职
     */
    async SelectPersionIDByDegreeLevel(degreeLevel, isFullTime) {
        let conditionString = "";
        if (degreeLevel == 1) {
            conditionString = `WHERE ( A0901B LIKE \'1%\' or A0901B LIKE \'2%\'  )  `;
        } else {
            conditionString = `WHERE A0901B LIKE \'${degreeLevel}%\'  `;
        }

        if (isFullTime != 3) {
            conditionString += ` and A0837=\'${isFullTime}\'  `;

            if(isFullTime ==1){
                conditionString += ` and  A0832='1' `
            }else if(isFullTime==2){
                conditionString += ` and  A0839='1' `
            }

        }else {
            //不在乎是否全日制
            conditionString += ` and A0835 ='1'  `;
        }

        //console.log(conditionString)
        return await this.dal.SelectDataFieldArrayFromDB('A08', 'DISTINCT A0000', conditionString);
    }


    /**
     * A0801B
     *  查询符合学历层次的人 返回A0000数组
     * @param {Object} educationLevel 1研究生 2本科 3 大专 4中专及以下
     * @param {Object} isFullTime     1全日制 2在职 3不在乎是否在职
     */
    async SelectPersionIDByEducationLevel(educationLevel, isFullTime) {
        let conditionString = "";
        if (educationLevel == 4) {
            conditionString = `WHERE ( A0801B LIKE \'4%\' or A0801B LIKE \'6%\'   or A0801B LIKE \'7%\'   or A0801B LIKE \'8%\'   or A0801B LIKE \'9%\' ) `;
        } else {
            conditionString = `WHERE A0801B LIKE \'${educationLevel}%\'  `;
        }

        if (isFullTime != 3) {
            conditionString += ` and A0837=\'${isFullTime}\'  `;
            if(isFullTime ==1){
                conditionString += ` and  A0831='1' `
            }else if(isFullTime==2){
                conditionString += ` and  A0838='1' `
            }

        }else {
            //不在乎是否全日制
            conditionString += ` and A0834 ='1'  `;
        }
        console.log(conditionString)
        return await this.dal.SelectDataFieldArrayFromDB('A08', 'DISTINCT A0000', conditionString);
    }

    /**
     * 查询符合学历层次的人数
     * @param {Object} educationLevel 1研究生 2本科 3 大专 4中专及以下
     * @param {Object} isFullTime     1全日制 2在职 3不在乎是否在职
     */
    async SelectPersionCountByEducationLevel(educationLevel, isFullTime) {
        let conditionString = ` `;
        if (educationLevel == 4) {
            conditionString = `where (A0801B LIKE \'$4%\' or A0801B LIKE \'6%\'   or A0801B LIKE \'7%\'   or A0801B LIKE \'8%\'   or A0801B LIKE \'9%\' ) `;
        } else {
            conditionString = `where A0801B LIKE \'${educationLevel}%\'  `;
        }

        if (isFullTime != 3) {
            conditionString += ` and A0837=\'${isFullTime}\'  `;
            if(isFullTime ==1){
                conditionString += ` and  A0831='1' `
            }else if(isFullTime==2){
                conditionString += ` and  A0838='1' `
            }

        }else {
            //不在乎是否全日制
            conditionString += ` and A0834 ='1'  `;
        }
        console.log(conditionString)
        let temp = await this.dal.SelectDataFieldArrayFromDB('A08', 'count(DISTINCT A0000) as num', conditionString);

        return temp[0].num;
        //return await this.dal.db.androidCounts('A08',conditionString) //('A06','DISTINCT A0000',`WHERE A0604 LIKE \'$%{skillTitle}%\' `);
    }

    /**
     * 查询符合学位层次的人数  以任免表输出为主
     * @param {Object} degreeLevel 1博士 3 硕士 4学士
     * @param {Object} isFullTime     1全日制 2在职 3不在乎是否在职
     */
    async SelectPersionCountByDegreeLevel(degreeLevel, isFullTime) {
        //if
        let conditionString = ``;
        if (degreeLevel == 1) {
            conditionString += ` WHERE ( A0901B LIKE \'1%\' or A0901B LIKE \'2%\' )  `;
        } else {
            conditionString += ` WHERE A0901B LIKE \'${degreeLevel}%\'  `;
        }

        if (isFullTime != 3) {
            conditionString += ` and A0837=\'${isFullTime}\'  `;

            if(isFullTime ==1){
                conditionString += ` and  A0832='1' `
            }else if(isFullTime==2){
                conditionString += ` and  A0839='1' `
            }

        }else {
            //不在乎是否全日制
            conditionString += ` and A0835 ='1'  `;
        }
        //console.log(conditionString)
        //return await this.dal.db.androidCounts('A08',conditionString);
        let temp = await this.dal.SelectDataFieldArrayFromDB('A08', 'count(DISTINCT A0000) as num', conditionString);
        //console.log(temp)
        return temp[0].num;
        // return temp;
    }

    //async GetInfoFor
    /**
     * @param {Object} eduInfoArrayOfCanRead 一个人完整的教育信息数组，已经是可阅读化的了。
     * 返回给任免表用的数据，包含全日制的最高学历、学位、学校、专业 和 在职的最高学历、学位及学校、专业
     */
    // MakeInfoForAppointmentFile(eduInfoArrayOfCanRead){
    // 	let temp:{
    // 		'HighestFulltimeAcademicQualification':'',
    // 		'HighestFulltimeDegreeLevel':'',
    // 		'FulltimeSchoolAndMajor':'',

    // 		'HighestInServiceAcademicQualification':'',
    // 		'HighestInServiceDegreeLevel':'',
    // 		'InServiceSchoolAndMajor':''
    // 	};

    // 	for(let info in eduInfoArrayOfCanRead){
    // 		if(info.ShouldInAppointmentFile=='true'){
    // 			//
    // 			if(info.EducationType =='1'){
    // 				//全日制
    // 				if(info.isHighestFulltimeAcademicQualification=="1"){
    // 					//是全日制最高学历
    // 					temp.HighestFulltimeAcademicQualification += info.AcademicQualification;
    // 				}

    // 				if(info.isHighestFulltimeDegreeLevel=="1"){
    // 					//是全日制最高学位
    // 					temp.HighestFulltimeAcademicQualification += info.Degree;
    // 				}

    // 				temp.FulltimeSchool += info.School+info.Major;
    // 			}
    // 			else{

    // 				//在职
    // 				if(info.isHighestInServiceAcademicQualification=="1"){
    // 					//最高在职学历
    // 					temp.HighestInServiceAcademicQualification += info.AcademicQualification;
    // 				}

    // 				if(info.isHighestInServiceDegreeLevel=="1"){
    // 					//最高在职学位
    // 					temp.HighestInServiceDegreeLevel += info.Degree;
    // 				}

    // 				temp.InServiceSchoolAndMajor = info.School+info.Major
    // 			}
    // 		}
    // 	}

    // 	return temp;
    // }

}

export default A08DAL;